基于JavaSwing实现学生信息管理系统(Mysql版)

您所在的位置:网站首页 java学生成绩管理系统GUI 使用文件保存 基于JavaSwing实现学生信息管理系统(Mysql版)

基于JavaSwing实现学生信息管理系统(Mysql版)

2023-06-18 05:42| 来源: 网络整理| 查看: 265

这个学生信息管理系统使用了 Java Swing 来构建一个基本的图形用户界面(GUI)。它允许用户添加、编辑、删除和搜索学生信息,并将这些信息存储在一个数据库中。

系统的主要功能包括:

连接到数据库:系统使用 JDBC(Java Database Connectivity)来连接到一个数据库。您需要根据实际情况提供数据库的 URL、用户名和密码。

检索学生信息:系统从数据库中检索已存储的学生信息,并将其显示在界面上。这确保了每次启动系统时,已存在的学生信息能够正确加载。

添加学生信息:用户可以在文本字段中输入学生的姓名和年龄,并点击“添加学生”按钮将其保存到数据库中。添加学生信息后,界面将更新并显示最新的学生列表。

编辑学生信息:用户可以选择已显示的学生,并在文本字段中更新其姓名和年龄。点击“编辑学生”按钮将更新的信息保存到数据库中,并更新界面上的学生列表。

删除学生信息:用户可以选择已显示的学生,并点击“删除学生”按钮将其从数据库中删除。删除学生信息后,界面将更新并显示更新后的学生列表。

搜索学生信息:用户可以在搜索文本字段中输入关键字,并点击“搜索”按钮来查找包含该关键字的学生。系统将显示符合搜索条件的学生列表。

清除界面:用户可以点击“清除”按钮来清空所有文本字段,并禁用编辑和删除按钮。

这个学生信息管理系统提供了基本的学生信息管理功能,通过连接到数据库并实现数据的持久化,确保学生信息在系统关闭后仍然可用。用户友好的图形界面使得操作简单直观。

请注意,在使用该系统之前,您需要根据实际情况配置数据库连接和表结构,确保数据库与代码中的信息相匹配。

import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; import java.util.ArrayList; public class StudentManagementSystem extends JFrame implements ActionListener { private JTextField txtName, txtAge, txtSearch; private JTextArea txtOutput; private JButton btnAdd, btnEdit, btnDelete, btnSearch, btnClear; private ArrayList students; private Connection connection; public StudentManagementSystem() { setTitle("学生信息管理系统"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 500); setLocationRelativeTo(null); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(5, 2)); JLabel lblName = new JLabel("姓名:"); txtName = new JTextField(20); JLabel lblAge = new JLabel("年龄:"); txtAge = new JTextField(20); btnAdd = new JButton("添加学生"); btnAdd.addActionListener(this); btnEdit = new JButton("编辑学生"); btnEdit.addActionListener(this); btnEdit.setEnabled(false); btnDelete = new JButton("删除学生"); btnDelete.addActionListener(this); btnDelete.setEnabled(false); JLabel lblSearch = new JLabel("搜索:"); txtSearch = new JTextField(20); btnSearch = new JButton("搜索"); btnSearch.addActionListener(this); btnClear = new JButton("清除"); btnClear.addActionListener(this); JLabel lblOutput = new JLabel("输出:"); txtOutput = new JTextArea(10, 30); txtOutput.setEditable(false); JScrollPane scrollPane = new JScrollPane(txtOutput); panel.add(lblName); panel.add(txtName); panel.add(lblAge); panel.add(txtAge); panel.add(btnAdd); panel.add(btnEdit); panel.add(btnDelete); panel.add(lblSearch); panel.add(txtSearch); panel.add(btnSearch); getContentPane().add(panel, BorderLayout.NORTH); getContentPane().add(lblOutput, BorderLayout.CENTER); getContentPane().add(scrollPane, BorderLayout.SOUTH); students = new ArrayList(); connectToDatabase(); retrieveStudents(); displayStudents(); } private void connectToDatabase() { try { String url = "jdbc:mysql://localhost:3306/your_database_name"; // 替换为实际的数据库URL String username = "your_username"; // 替换为实际的用户名 String password = "your_password"; // 替换为实际的密码 connection = DriverManager.getConnection(url, username, password); System.out.println("成功连接到数据库"); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "无法连接到数据库"); } } private void retrieveStudents() { try { String query = "SELECT * FROM students"; PreparedStatement statement = connection.prepareStatement(query); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { String name = resultSet.getString("name"); String age = resultSet.getString("age"); Student student = new Student(name, age); students.add(student); } resultSet.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "检索学生信息时出错"); } } private void saveStudent(Student student) { try { String query = "INSERT INTO students (name, age) VALUES (?, ?)"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, student.getName()); statement.setString(2, student.getAge()); statement.executeUpdate(); statement.close(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "保存学生信息时出错"); } } private void updateStudent(Student student) { try { String query = "UPDATE students SET name = ?, age = ? WHERE name = ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, student.getName()); statement.setString(2, student.getAge()); statement.setString(3, student.getName()); statement.executeUpdate(); statement.close(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "更新学生信息时出错"); } } private void deleteStudent(Student student) { try { String query = "DELETE FROM students WHERE name = ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, student.getName()); statement.executeUpdate(); statement.close(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "删除学生信息时出错"); } } private void displayStudents() { txtOutput.setText(""); for (Student student : students) { txtOutput.append("姓名:" + student.getName() + ",年龄:" + student.getAge() + "\n"); } } private void searchStudents(String keyword) { txtOutput.setText(""); for (Student student : students) { if (student.getName().toLowerCase().contains(keyword.toLowerCase())) { txtOutput.append("姓名:" + student.getName() + ",年龄:" + student.getAge() + "\n"); } } } private void clearFields() { txtName.setText(""); txtAge.setText(""); txtSearch.setText(""); txtOutput.clearSelection(); btnEdit.setEnabled(false); btnDelete.setEnabled(false); } public void actionPerformed(ActionEvent e) { if (e.getSource() == btnAdd) { String name = txtName.getText(); String age = txtAge.getText(); if (!name.isEmpty() && !age.isEmpty()) { Student student = new Student(name, age); saveStudent(student); students.add(student); displayStudents(); clearFields(); } } else if (e.getSource() == btnEdit) { int selectedIndex = txtOutput.getSelectedIndex(); if (selectedIndex >= 0) { String name = txtName.getText(); String age = txtAge.getText(); if (!name.isEmpty() && !age.isEmpty()) { Student student = students.get(selectedIndex); student.setName(name); student.setAge(age); updateStudent(student); displayStudents(); clearFields(); } } else { JOptionPane.showMessageDialog(this, "请先选择要编辑的学生"); } } else if (e.getSource() == btnDelete) { int selectedIndex = txtOutput.getSelectedIndex(); if (selectedIndex >= 0) { Student student = students.get(selectedIndex); deleteStudent(student); students.remove(selectedIndex); displayStudents(); clearFields(); } else { JOptionPane.showMessageDialog(this, "请先选择要删除的学生"); } } else if (e.getSource() == btnSearch) { String keyword = txtSearch.getText(); searchStudents(keyword); } else if (e.getSource() == btnClear) { clearFields(); } } private class Student { private String name; private String age; public Student(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { StudentManagementSystem system = new StudentManagementSystem(); system.setVisible(true); }); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3